package com.lyz.dataStructure.考研上机编程题;/**
 * @Author:759057893@qq.com Lyz
 * @Date: ${Date} 23:11
 * @Description:
 **/

/**
 *@Author:759057893@qq.com Lyz
 *@Date: 2019/9/4 23:11
 *@Description:
 **/
/*
题目描述
输入n个整数,依次输出每个数的约数的个数
输入描述:
输入的第一行为N，即数组的个数(N<=1000)
接下来的1行包括N个整数，其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
输出描述:
可能有多组输入数据，对于每组输入数据，
输出N行，其中每一行对应上面的一个数的约数的个数。
示例1
输入
复制
5
1 3 4 6 12
输出
复制
1
2
3
4
6
 */
import java.util.*;

public class 约数的个数{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int N = sc.nextInt();
            int[] arr = new int[N];
            for(int i =0;i<arr.length;i++){
                arr[i] =sc.nextInt();
            }
            for(int n:arr){
                System.out.println(returnCommon(n));
            }
        }
    }
    public static int returnCommon(int n){
        if(n<=0) return -1;
        int count = 0;
        if(n==1) return 1;
        int temp =(int)Math.sqrt(n);  //要进行优化，获取输入值的一半，当除以当前值余0时，乘以2
        for(int i =1;i<=temp;i++){
            if(n%i==0){
                count=count+2;
            }
        }
        if(temp*temp==n) count--;
        return count;
    }
}
